package model.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import model.bean.Evento;
import model.bean.Participante;
import model.interfaces.IParticipante;

public class ParticipanteDAO implements IParticipante {

	public EntityManager getEntitymanager(){
		EntityManagerFactory factory = null;
		EntityManager manager = null;
		
		try{
			factory = Persistence.createEntityManagerFactory("SmartClassroomPUnit");
			manager = factory.createEntityManager();
		}catch(Exception e){
			System.out.println("Erro : " + e);
		}finally{
			factory.close();
		}
		
		return manager;
	}

@Override
public String getMatricula(Participante participante) {
	return participante.getMatricula();
}

@Override
public String getNome(Participante participante) {
	return participante.getNome();
}



@Override
public void cadastrarParticipante(Participante participante) {
	EntityManager manager = getEntitymanager();
	try{
		manager.getTransaction().begin();
		System.out.println("Cadastrando Participante " + participante.getNome());
		manager.persist(participante);
		manager.getTransaction().commit();
	}catch(Exception e){
		System.out.println("Erro : " + e);
	}finally{
		manager.close();
		System.out.println("Participante Inserido com sucesso...");
	}
	
}


@Override
public void vinculaEventoParticipante(Evento evento, Participante participante) {
	EntityManager manager = getEntitymanager();
	try{
		manager.getTransaction().begin();
		System.out.println("Vinculando Evento ao Participante " + participante.getNome());
		participante.getEventos().add(evento);
		manager.persist(participante);
		manager.getTransaction().commit();
	}catch(Exception e){
		System.out.println("Erro : " + e);
	}finally{
		manager.close();
		System.out.println("Participante Inserido com sucesso...");
	}
	
}


@Override
public String getLogin(Participante participante) {
	return participante.getLogin();
}


//@Override
//public void solitarPresenca(Participante participante) {
//	// TODO Auto-generated method stub
//	
//}


//@Override
//public void solicitarControle(Participante participante) {
//	// TODO Auto-generated method stub
//	
//}


@Override
public boolean statusPresenca(Participante participante) {
	return participante.isPresente();
}

}
